package com.tianruan.dc.modules.sys.user.api;

import com.tianruan.dc.common.encoding.Md5PasswordEncoder;
import com.tianruan.dc.common.utils.StringUtils;
import com.tianruan.dc.common.utils.response.VResponse;
import com.tianruan.dc.modules.sys.user.entity.WXResponse;
import com.tianruan.dc.modules.sys.user.entity.dto.RegisterDTO;
import com.tianruan.dc.modules.sys.user.service.IBindWXService;
import com.tianruan.dc.modules.sys.user.service.IRegisterService;
import com.tianruan.dc.modules.sys.user.service.ISmsCodeService;
import com.tianruan.dc.modules.sys.user.utils.WXUtils;
import com.tianruan.dc.modules.userinfo.controller.UserInfoController;
import com.tianruan.dc.modules.userinfo.entity.User;
import com.tianruan.dc.modules.userinfo.service.UserInfoService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.validation.Valid;

import static com.tianruan.dc.common.constant.GlobalExceptionEnum.*;
import static net.sf.jsqlparser.util.validation.metadata.NamedObject.user;

/**
 * 注册
 */
@Slf4j
@RestController
@RequestMapping("/oauth")
public class RegisterController {

    @Autowired
    private IRegisterService iRegisterService;

    @Autowired
    private ISmsCodeService iSmsCodeService;


    /**
     * 后台注册
     *
     * @param registerDTO
     * @return
     */
    @PostMapping("/register")
//    @PreAuthorize("hasAnyAuthority('sys:super:admin','sys:administrator:control')")
    public VResponse<Object> register(@Valid @RequestBody RegisterDTO registerDTO) {
        try {
            // 验证输入信息 用户名不能为空
            if (StringUtils.isBlank(registerDTO.getUsername())) {
                return VResponse.result(NO_BLANK_ERROR);
            }
            // 查询数据库中是否存在相同的用户名
            boolean isUsernameExist = iRegisterService.isUsernameExist(registerDTO.getUsername());
            if (!isUsernameExist) {
                return VResponse.result(DUPLICATE_USERNAME);
            }
            // 查询是否重复注册
            boolean isNameExist = iRegisterService.isNameExist(registerDTO.getName());
            if (!isNameExist){
                return VResponse.error(250,"您已经注册过了");
            }
            //验证手机验证码
            if (!iSmsCodeService.check(registerDTO.getPhone(), registerDTO.getSms_code())) {
                return VResponse.result(ERROP_CODE);
            } else {

                // 存入数据
                iRegisterService.save(registerDTO);
//                userInfoService.insertUser(registerDTO);

                // 传入角色到角色表
                iRegisterService.role(registerDTO.getId(),registerDTO.getRoleId());

                return VResponse.result(SUCCESS_TO_REGISTER);
            }
        }
        catch (Exception e) {
            return VResponse.result(FAIL_TO_RREGISTER);
        }

    }

    /**
     * 微信小程序注册
     *
     * @param user
     * @return
     */
//    @PostMapping("/appletRegister")
//    public VResponse<Object> appletRegister(@RequestBody User user) {
//        try {
//            // 验证输入信息 用户名不能为空
//            if (StringUtils.isBlank(registerDTO.getUsername())) {
//                return VResponse.result(NO_BLANK_ERROR);
//            }
//
//            // 查询数据库中是否存在相同的用户名
//            boolean isUsernameExist = iRegisterService.isUsernameExist(registerDTO.getUsername());
//            if (!isUsernameExist) {
//                return VResponse.result(DUPLICATE_USERNAME);
//            } else {
//
////         存入数据 添加新用户
//                iRegisterService.save(registerDTO);
//
//
//        try {
//            //新增用户id
//            iRegisterService.WXsave(user);
//
//            log.info("微信小程序注册生成的uuid:{}",user.getUserId());
//
//            // 传入角色
////            iRegisterService.WXrole(user.getUserId(),registerDTO.getRoleId());
//
//            //绑定微信
////             调用微信接口获取用户信息
//            WXResponse wxResponse = wxUtils.code2Session(user.getCode());
//            if (wxResponse == null || wxResponse.getOpenid() == null) {
//                //微信绑定失败
//                return VResponse.result(FAIL_TO_BIND_WX);
//            }
//            // 登录成功，返回用户信息或者其他处理逻辑
//            String openid = wxResponse.getOpenid();
////            String openid="oWQH_7Hx3VJDR6RG3qrREL7Hi2w0";
//
//            // 查询数据库中是否存在相同的用户名
//            boolean isUsernameExist = iRegisterService.isUsernameExist(openid);
//            if (!isUsernameExist) {
//                return VResponse.result(EXCEPTION_BIND_ONLY_WX);
//            }
//
//            log.info("登录成功！用户的openid为：{}", openid);
//
//            ibindWXService.bind(user.getUserId(), openid);
//
//            //将openid存入账号
//            user.setNo(openid);
//            //MD5加密密码
//            Md5PasswordEncoder md5PasswordEncoder = new Md5PasswordEncoder();
//            //默认密码
//            user.setPassword(md5PasswordEncoder.encode("123456"));
//
//
//            //保存用户信息
//            userInfoService.insertUser(user);
//
//            //微信绑定成功
//            return VResponse.result(SUCCESS_TO_BIND_WX);
//
//        } catch (Exception e) {
//            e.printStackTrace();
//            //微信绑定异常
//            return VResponse.result(EXCEPTION_BIND_WX);
//
//        }
//
//            try {
//            iRegisterService.WXrole(user.getUserId(),registerDTO.getRoleId());
//
//                return VResponse.result(SUCCESS_TO_REGISTER);
//            } catch (Exception e) {
//                e.printStackTrace();
//            return VResponse.result(FAIL_TO_RREGISTER);
//    }
}
//

